// Copyright Epic Games, Inc. All Rights Reserved.  // 版权声明

#include "LyraGameplayAbilityTargetData_SingleTargetHit.h"  // 包含对应的头文件

#include "LyraGameplayEffectContext.h"  // 包含游戏特定效果上下文头文件

#include UE_INLINE_GENERATED_CPP_BY_NAME(LyraGameplayAbilityTargetData_SingleTargetHit)  // 包含UE内联生成的代码

struct FGameplayEffectContextHandle;  // 前向声明FGameplayEffectContextHandle结构体

//////////////////////////////////////////////////////////////////////  // 分隔线

/**
 * 将目标数据添加到效果上下文的具体实现
 * @param Context 效果上下文句柄
 * @param bIncludeActorArray 是否包含演员数组
 */
void FLyraGameplayAbilityTargetData_SingleTargetHit::AddTargetDataToContext(FGameplayEffectContextHandle& Context, bool bIncludeActorArray) const  // 实现AddTargetDataToContext函数
{
	FGameplayAbilityTargetData_SingleTargetHit::AddTargetDataToContext(Context, bIncludeActorArray);  // 调用父类的实现

	// Add game-specific data  // 注释：添加游戏特定数据
	if (FLyraGameplayEffectContext* TypedContext = FLyraGameplayEffectContext::ExtractEffectContext(Context))  // 尝试将上下文转换为游戏特定类型
	{
		TypedContext->CartridgeID = CartridgeID;  // 将当前目标数据的CartridgeID赋值给上下文中的CartridgeID
	}
}

/**
 * 网络序列化函数的具体实现
 * @param Ar 存档对象
 * @param Map 包映射
 * @param bOutSuccess 输出参数，表示序列化是否成功
 * @return 总是返回true
 */
bool FLyraGameplayAbilityTargetData_SingleTargetHit::NetSerialize(FArchive& Ar, class UPackageMap* Map, bool& bOutSuccess)  // 实现NetSerialize函数
{
	FGameplayAbilityTargetData_SingleTargetHit::NetSerialize(Ar, Map, bOutSuccess);  // 调用父类的网络序列化实现

	Ar << CartridgeID;  // 使用存档对象序列化CartridgeID成员变量

	return true;  // 返回true表示序列化成功
}